'''
私有属性--仅仅是约定而已，与常量命名一样
    通常约定，两个下划线开头的属性是私有的，其他阿德为公共的
    类内部可以访问私有属性（方法）
    类外部不能直接访问私有属性（方法）
    类外部可以通过_类名__私有属性(方法)名访问私有属性(方法)
方法本质上也是属性。只不过可以通过()执行而已。所以私有属性和公有属性其实也包含了方法。
'''


class Employee:
    __company = '百战'  # 解释器运行时，把__company转成了_Employee__company

    def __init__(self, name, age, addr):
        self.name = name
        self.age = age
        self.__addr = addr

    def say(self):
        print(f'我的公司是{Employee.__company}')


# print(Employee.__company) 会报错
print(dir(Employee))
print(Employee._Employee__company)

e = Employee('金球', 28, 'DG')
print(e._Employee__addr)